/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.DepartamentoAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Departamento;
import br.com.sgs.fachada.DepartamentoFachada;
import br.com.sgs.fachada.DepartamentoIFachada;
import br.com.sgs.util.DataValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.selectonemenu.SelectOneMenu;

/**
 *
 * @author Eric
 */

@ManagedBean(name="departamentoEditMB")
@ViewScoped
public class DepartamentoEditMB implements Serializable {

    private Departamento departamentoselecionado;
    
    //Campos que receberão as informações
    private String descricao;
    private String ramal;
    
    //Select One Menu
    private SelectOneMenu cmbStatus;
    private List<SelectItem> lsstatus = new ArrayList<SelectItem>();
    private int idstatus;
        
    /**
     * Creates a new instance of InstituicaoNew
     */
    public DepartamentoEditMB() {
    }
    
    @PostConstruct 
    public void init(){
        
         String param = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("iddepartamento");
            if (param != null) {

                DepartamentoIFachada ifach = new DepartamentoFachada();
                
                departamentoselecionado =  ifach.findDepartamentoById(Integer.parseInt(param));
                if (departamentoselecionado != null) {
                    setarCampos();
                    popularCombos();
                }
                
            }
        
    }      

    public String salvar() {
        try {          
            
            departamentoselecionado.setDescricao(getDescricao());
            departamentoselecionado.setRamal(getRamal());
            departamentoselecionado.setStatus(Integer.parseInt(getCmbStatus().getValue().toString()));
                      
            DepartamentoIFachada ifach = new DepartamentoFachada();
            ifach.alterar(departamentoselecionado);

             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgSalvoSucesso"), ""));
          
            return "DEPARTAMENTOLIST";

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("erroNaoEncontrado"), ""));
            e.printStackTrace();     
            return null;
        }
    }
    
    public void limparCampos() {
        try {

            setDescricao("");
            setRamal("");
            setIdstatus(0);
            
        } catch (Exception e) {
            System.err.println("Erro no limparCampos");
        }

    }
 
     public void setarCampos() {
        try {

            setDescricao(departamentoselecionado.getDescricao());
            setIdstatus(departamentoselecionado.getStatus());
            setRamal(departamentoselecionado.getRamal());
            
        } catch (Exception e) {
            System.err.println("Erro no metodo setarCampos!");
        }
    }
     
    public String voltar() {
        try {
            return "DEPARTAMENTOLIST";
        } catch (Exception e) {
            System.err.println("Erro no método voltar");
            return null;
        }
    }

    public void popularCombos() {
        try {
          
            for (DataValue d : DepartamentoAux.getStatusListaAll()) {
                getLsstatus().add(new SelectItem(d.getValue(), MessageBundleLoader.getMessage(d.getName())));
            }

        } catch (Exception e) {
            System.err.println("Erro no popularCombos");
        }

    }

    /**
     * @return the lsstatus
     */
    public List<SelectItem> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<SelectItem> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the idstatus
     */
    public int getIdstatus() {
        return idstatus;
    }

    /**
     * @param idstatus the idstatus to set
     */
    public void setIdstatus(int idstatus) {
        this.idstatus = idstatus;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the ramal
     */
    public String getRamal() {
        return ramal;
    }

    /**
     * @param ramal the ramal to set
     */
    public void setRamal(String ramal) {
        this.ramal = ramal;
    }

    /**
     * @return the cmbStatus
     */
    public SelectOneMenu getCmbStatus() {
        return cmbStatus;
    }

    /**
     * @param cmbStatus the cmbStatus to set
     */
    public void setCmbStatus(SelectOneMenu cmbStatus) {
        this.cmbStatus = cmbStatus;
    }
 
}
